package com.edu.controller;

import com.edu.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;

@Controller
public class UserController {

    @RequestMapping("/register")
    public String register(User user){
        System.out.println(user);
        return "forward:/index.jsp";
    }

    /**
     * 在1 需要验证得参数前面 + @Valid  表示对这个参数进行数据校验
     *   2 在Controller的方法 里 加入一个参数BindingResult 这个对象中会包含所有的验证信息
     *      BindingResult的方法
     *          hasErrors 表示当前验证中是否有错误
     *          getFieldErrors() 取出所有的错误信息
     *
     *   3.FieldError对象 代表错误信息
     *      方法:
     *              getField() 获取 出错的那个属性的属性的名字
     *              getDefaultMessage() 获取注释里写的错误提示消息
     */
    @RequestMapping("/register2")
    public String register2(@Valid User user, BindingResult bindingResult,Model model){
         if(bindingResult.hasErrors()){  //判断验证是否出错
             List<FieldError> fieldErrors = bindingResult.getFieldErrors(); //获取 所有的错误信息 List<FieldError>,FieldError代表一条错误性
             Map<String,String> errors = new HashMap<>();
             for (FieldError fieldError : fieldErrors) {  //遍历所有的错误信息
                 errors.put(fieldError.getField(),fieldError.getDefaultMessage());
             }
             model.addAttribute("errors",errors);
             return "forward:/register2.jsp";
         }

        return "forward:/index.jsp";
    }
}
